%{
   #include "analex.h"
%}
%%

[ ] { printf(" "); fputs(" ", lst);}

[\n] { printf("\n"); fputs("\n", lst); line++;}

[\t] { printf("\t"); fputs("\t", lst); }

\{[^\}]*\} { printf("%s", yytext); fputs(yytext, lst); }

[\.\,\;\(\)\\\{\}] { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return SEPARATEUR; }

(if)|(while)|(else)|(for) { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_CONDITION; }

[+]|[-]|[/]|[*] { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return OPER_ARITHMETIQUE; }

[<]|[<][>]|[<][=]|[>][=]|[>]|[=]|[!][=] { printf("%s", yytext); fputs(yytext, f=lst); strcpy(u_lex, yytext); return OPER_LOGIQUE; }

\[[0-9]+[.][.][0-9]+\]|\[-[0-9]+[.][.][0-9]+\]|\[[0-9]+[.][.]-[0-9]+\]|\[-[0-9]+[.][.]-[0-9]+\] { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return INTERVAL; }

[tT][rR][uU][eE]|[fF][aA][lL][sS][eE] { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_BOOLEENNE; }

'.' { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_CARACTERE; }

'[^']*' { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_CHAINE; }

[0-9]+ { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_ENTIERE; }

[0-9]+[.][0-9]+ { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return CONST_REELLE; }

(:=)|[:]|[=] { printf("%s", yytext); fputs(yytext, lst); strcpy(u_lex, yytext); return AFFECTATION; }

[a-zA-Z][a-zA-Z0-9]* { printf("%s", yytext);  strcpy(u_lex, yytext); fputs(u_lex, lst); return IDENTIFICATEUR; }
%%
